package jdbcConnect;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.*;
import java.util.ResourceBundle;
import java.util.Scanner;


public class Main {

    public static void main(String[] args) throws Exception {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        Scanner s = new Scanner(System.in);
        //提供一个输入的入口，可以让用户输入用户名和密码
        // JDBC代码
        try {
            //调用JDBC无参构造方法
            //创建JDBC对象
            JDBC jdbc = new JDBC();
            Class.forName(jdbc.driver);
            // 2、获取连接，返回连接对象connection
            conn = jdbc.JDBCConnectvoid();
            // 3、获取数据库操作对象
            stmt = conn.createStatement();

            boolean login = true;
            while (login) {
                System.out.println("这是初始菜单");
                System.out.println("请输入你的操作：");
                System.out.println("1.账户注册\t2.账号登录\t3.退出");
                int choose = s.nextInt();
                switch (choose) {
                    case 1:
                        //注册模块
                        StudentMain_login stuLogin = new StudentMain_login(conn, stmt);
                        stuLogin.Login(stmt);
                        break;
                    case 2:
                        //登录
                        System.out.println("接下来即将进行账号登陆!");
                        System.out.println("请输入您的账号：");
//                        String kk = s.nextLine();
                        String loginuser = s.next();
                        System.out.println("请输入您的密码：");
                        String loginpwd = s.next();
                        //创建老师登录类对象
                        TeacherLogin teacherLogin = new TeacherLogin();
                        //给老师登录传参
                        teacherLogin.setLogin(loginuser, loginpwd);
                        //创建学生登陆类有参构造方法
                        StudentLogin studentLogin = new StudentLogin(loginuser, loginpwd);
                        //以下是登录的身份进行判断
                        if (teacherLogin.Login(conn)) {
                            boolean Tflag = true;
                            Teacher tea = new Teacher(loginuser, loginpwd);
                            System.out.println("恭喜成功进入老师端");
                            while (Tflag) {
                                System.out.println("请输入您的操作");
                                System.out.println("1.查看学生信息\t2.添加学生信息\t3.修改学生信息\t");
                                System.out.println("4.删除学生信息\t5.学生信息导出\t6.弹幕小工具\t7.退出当前菜单");
                                int identify = s.nextInt();
                                switch (identify) {
                                    //查看学生信息
                                    case 1:
                                        tea.Select();
                                        break;
                                    //添加学生信息
                                    case 2:
                                        tea.Insert();
                                        break;
                                    //修改学生信息
                                    case 3:
                                        tea.Update();
                                        break;
                                    //删除学生信息
                                    case 4:
                                        tea.Delete();
                                        break;
                                    //学生信息导出
                                    case 5:
                                        //导出到excel中
                                        // 需要用到输出流
                                        tea.OutExcel();
                                        break;
                                    //弹幕小工具
                                    case 6:
                                        //老师端
                                        //创建服务器端的Socket对象
                                        tea.Serve();
//                                        TcpServer tcpServer = new TcpServer(8000);
//                                        tcpServer.start();
                                        break;
                                        //退出
                                    case 7:
                                        Tflag = false;
                                }
                            }
                        } else {
                            if (studentLogin.Login(conn)) {
                                System.out.println("恭喜成功进入学生端");
                                Student student = new Student(loginuser,loginpwd);
                                boolean op = true;
                                while (op) {
                                    System.out.println("请选择学生的操作：");
                                    System.out.println("1.查看学生信息\t2.修改学生信息\t3.个人信息导出\t");
                                    System.out.println("4.弹幕小工具\t5.返回上一级");
                                    int stuchoose = s.nextInt();
                                    switch (stuchoose) {
                                        //查看学生单条信息
                                        case 1:
                                            student.Select();
                                            break;
                                        //修改个人信息
                                        case 2:
                                            student.Update();
                                            break;
                                        //个人信息导出
                                        case 3:
                                            student.OutTxt();
                                            break;
                                        //弹幕小工具
                                        case 4:
                                            student.SendMessage();
                                            //释放资源
                                            break;
                                        //退出（返回上个界面）
                                        case 5:
                                            op = false;
                                            break;
                                    }
                                }
                            } else {
                                System.out.println("查无此人！");
                                break;
                            }
                        }
                        break;
                    case 3:
                        System.exit(0);
                        break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 6、释放资源
            rs.close();
            stmt.close();
            conn.close();
//            JDBC.JDBCClose(rs,stmt,conn);
        }
    }
}

